<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body,
        ul,
        li {
            padding: 0;
            margin: 0;
        }

        ul {
            list-style-type: none
        }

        .rating {
            width: 300px;
            height: 47px;
        }

        .rating-item {
            float: left;
            width: 48px;
            height: 47px;
            background: url(img/rating.png) no-repeat 0 0px;
            /* 将多张图片合并到一起，可以降低网络开销 */
            cursor: pointer
        }
    </style>
</head>

<body>

    <ul class="rating" id="rating">

        <li class="rating-item" title="很不好"></li>
        <li class="rating-item" title="不好"></li>
        <li class="rating-item" title="一般"></li>
        <li class="rating-item" title="好"></li>
        <li class="rating-item" title="很好"></li>

    </ul>
    <!-- 使用cdn最大的好处就是可以和其他的项目公用同样的jquery文件，这样可以减少网络开销 -->
    <!-- cdn：内容分发网络，使得用户可以就近访问数据，提高访问的速度 -->
    <script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
    <script>
        var num = 2;
        $item = $("#rating").find(".rating-item");

        var lightOn = function (num) {
            $item.each(function (index) {
                // console.log(this);//这里this是每个星星对象，$(this)的目的是将它转换成jquery
                if (index < num) {
                    $(this).css('background-position', '0 -94px');
                } else {
                    $(this).css("background-position", '0 0');
                }
            })
        }

        lightOn(2);
        $item.on("mouseover", function () {
            lightOn($(this).index() + 1);
        }).on("click", function () {
            lightOn($(this).index() + 1);
            num = $(this).index() + 1;
        }).on("mouseout", function () {
            lightOn(num);
        })

        /* 
        上面代码存在的问题：
        1、全局变量污染（使用闭包解决、对象解决）
        2、事件绑定比较浪费（利用冒泡解决，事件委托）
        3、代码没有办法复用


         */
    </script>

</body>

</html>